home *** CD-ROM | disk | FTP | other *** search
GW-BASIC | 1997-01-29 | 6.3 KB | 213 lines |
- 10 'STUBANT - Stub Match for Antennas - 19 FEB 95 rev. 28 SEP 96
- 20 IF EX$=""THEN EX$="EXIT" 'if ex$ not chained from previous program
- 30 IF PROG$=""THEN GO$=EX$ ELSE GO$=PROG$
- 40 COMMON EX$,PROG$
- 50 CLS:KEY OFF:COLOR 7,0,1
- 60 UL$=STRING$(80,205)
- 70 U1$="#####.###"
- 80 U2$="##.###"
- 90 U3$="####.##"
- 100 PI=3.14159
- 110 '
- 120 '.....start
- 130 CLS
- 140 COLOR 15,2
- 150 PRINT " STUB MATCH for ANTENNAS";
- 160 PRINT TAB(61);"by ";CHR$(34);"LB";CHR$(34);" Cebik W4RNL ";
- 170 PRINT STRING$(80,32);
- 180 LOCATE CSRLIN-1,20:PRINT "edited for HAMCALC by George Murphy VE3ERP"
- 190 COLOR 1,0:PRINT STRING$(80,223);:COLOR 7,0
- 200 MARGIN=7
- 210 PRINT TAB(MARGIN);
- 220 PRINT "A Stub Matching system for any given Antenna Load Resistance (R),"
- 230 PRINT TAB(MARGIN);
- 240 PRINT "Antenna Load Reactance (X), and Matchline, Stub and Feedline"
- 250 PRINT TAB(MARGIN);
- 260 PRINT "Impedances (Zo)."
- 270 '
- 280 '.....schematic
- 290 COLOR 0,7:VIEW PRINT 7 TO 17:CLS:VIEW PRINT:LOCATE 7
- 300 LOCATE 25:PRINT STRING$(80,219);
- 310 LOCATE 7
- 320 PRINT
- 330 TB=27 'tab
- 340 PRINT TAB(TB-16);"/SOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDBSAVE//BSAVESOUNDSOUNDSOUND ANTENNASOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUND/"
- 350 PRINT TAB(TB);" CALL CALLDEFSNGSOUNDSOUND MATCHLINE to stub junction"
- 360 PRINT TAB(TB);" BLOADCOLORVARPTR<0xB4!>DEFSNGSOUNDSOUND stub junction"
- 370 PRINT TAB(TB);" CALLCALLCALLDEFSNGSOUNDSOUNDSOUND STUB"
- 380 PRINT TAB(TB);" CALLCALLCALLCALL"
- 390 PRINT TAB(TB);" CALLCSRLINCSRLINDEFSNGSOUNDSOUNDSOUND shorting bar (optional)"
- 400 PRINT TAB(TB);" CALLCALLCALLCALL"
- 410 PRINT TAB(TB);" CALL CALLDEFSNGSOUNDSOUND FEEDLINE to stub junction"
- 420 PRINT TAB(TB);" CALL CALL"
- 430 PRINT
- 440 LN=CSRLIN:LOCATE LN-8
- 450 PRINT " Feedline and Matchline should be"
- 460 PRINT " as near horizontal as possible at"
- 470 PRINT " the stub junction, with the stub"
- 480 PRINT " hanging vertically."
- 490 COLOR 7,0
- 500 LOCATE LN
- 510 PRINT TAB(MARGIN);
- 520 PRINT "For any antenna load R and X, this program finds the Matchline and"
- 530 PRINT TAB(MARGIN);
- 540 PRINT "Stub lengths needed to match any feedline Zo if a match is possible"
- 550 PRINT TAB(MARGIN);
- 560 PRINT "with the proposed Line, Stub, and Feed Zo values."
- 570 PRINT UL$;
- 580 COLOR 14,4
- 590 LOCATE CSRLIN,14
- 600 PRINT "........Press <1> to CONTINUE or <0> to EXIT........."
- 610 COLOR 7,0
- 620 Z$=INKEY$
- 630 IF Z$="0"THEN CLS:CHAIN GO$
- 640 IF Z$="1"THEN LOCATE CSRLIN-1:PRINT STRING$(80,32);:GOTO 660
- 650 GOTO 620
- 660 GOSUB 2000 'screen dump
- 670 '
- 680 '.....data input
- 690 VIEW PRINT 2 TO 24:CLS:VIEW PRINT:LOCATE 2:PRINT UL$;
- 700 GOTO 770
- 710 '
- 720 '.....format entry
- 730 LOCATE CSRLIN-1:PRINT " ";
- 740 LOCATE CSRLIN,58:PRINT USING U1$;Y;
- 750 RETURN
- 760 '
- 770 INPUT " ENTER: Antenna Load Resistance..........................(ohms) ";RL
- 780 Y=RL:GOSUB 720:PRINT " - "
- 790 INPUT " ENTER: Antenna Load Reactance...........................(ohms) ";XL
- 800 Y=XL:GOSUB 720:PRINT " - "
- 810 INPUT " ENTER: Frequency.........................................(MHz) ";FQ
- 820 Y=FQ:GOSUB 720:PRINT " MHz "
- 830 INPUT " ENTER: Impedance of MATCHLINE (Stub to Antenna).........(ohms) ";ZL
- 840 Y=ZL:GOSUB 720:PRINT " - "
- 850 INPUT " ENTER: Velocity Factor of MATCHLINE (decimal)................. ";VFL
- 860 Y=VFL:GOSUB 720:PRINT " "
- 870 INPUT " ENTER: Impedance of FEEDLINE (Stub to Rig)..............(ohms) ";ZF
- 880 Y=ZF:GOSUB 720:PRINT " - "
- 890 INPUT " ENTER: Velocity Factor of FEEDLINE (decimal).................. ";VFF
- 900 Y=VFF:GOSUB 720:PRINT " "
- 910 INPUT " ENTER: Impedance of STUB................................(ohms) ";ZS
- 920 Y=ZS:GOSUB 720:PRINT " - "
- 930 INPUT " ENTER: Velocity Factor of STUB (decimal)...................... ";VFS
- 940 Y=VFS:GOSUB 720:PRINT " "
- 950 '
- 960 '.....calculate
- 970 RLS=RL^2:XLS=XL^2:ZLS=ZL^2:RIS=RI^2
- 980 RHOS=((RL-ZL)^2+XLS)/((RL+ZL)^2+XLS)
- 990 RT=(ZL^2*(1-RHOS))/(ZF*(RHOS-1)+2*ZL*(RHOS+1))
- 1000 RI=RT
- 1010 XT=SQR(ZF*RT-RT^2)
- 1020 A=XLS/ZLS+RLS/ZLS-RL/RI
- 1030 IF A=0 THEN A=9E-09
- 1040 B=2*XL/ZL
- 1050 C=1-RL/RI
- 1060 NUM=B^2-4*A*C
- 1070 IF NUM<0 THEN 1400
- 1080 TLP=(B+SQR(B^2-4*A*C))/(2*A)
- 1090 TLM=(B-SQR(B^2-4*A*C))/(2*A)
- 1100 LP=ATN(TLP)
- 1110 LM=ATN(TLM)
- 1120 LPD=LP*180/PI
- 1130 IF LPD<0 THEN LPD=180+LPD
- 1140 LMD=LM*180/PI
- 1150 IF LMD<0 THEN LMD=180+LMD
- 1160 LPF=LPD*VFL/(0.366013*FQ)
- 1170 LMF=LMD*VFL/(0.366013*FQ)
- 1180 PRINT " MATCHLINE Option A: Length..............................";
- 1190 PRINT USING U1$;LPF;:PRINT " ft.=";USING U2$;LPF*0.3048;:PRINT "m"
- 1200 LOCATE CSRLIN+5
- 1210 PRINT " MATCHLINE Option B: Length..............................";
- 1220 PRINT USING U1$;LMF;:PRINT " ft.=";USING U2$;LMF*0.3048;:PRINT "m"
- 1230 LR=LP:GOTO 1450
- 1240 RIA=RI:XIA=XI
- 1250 LOCATE CSRLIN-6
- 1260 PRINT TAB(9);"Series resistance before stub installation.......";
- 1270 PRINT USING U1$;RI;:PRINT " -"
- 1280 PRINT TAB(9);"Series reactance before stub installation........";
- 1290 PRINT USING U1$;XI;:PRINT " -"
- 1300 LR=LM:GOTO 1450
- 1310 RIB=RI
- 1320 XIB=XI
- 1330 LOCATE CSRLIN+4
- 1340 PRINT TAB(9);"Series resistance before stub installation.......";
- 1350 PRINT USING U1$;RI;:PRINT " -"
- 1360 PRINT TAB(9);"Series reactance before stub installation........";
- 1370 PRINT USING U1$;XI;:PRINT " -"
- 1380 GOTO 1650
- 1390 '
- 1400 PRINT" There are no possible solutions with this combination of antenna"
- 1410 PRINT" impedance and line impedance. Resistance along the line does not"
- 1420 PRINT" reach the value of the characteristic impedance of the feed line."
- 1430 GOTO 1970
- 1440 '
- 1450 IF RL=0 THEN RL=9E-09
- 1460 RA=RL/ZL
- 1470 XA=XL/ZL
- 1480 T=TAN(LR)
- 1490 TS=T*T
- 1500 DA=(1-XA*T)*(1-XA*T)
- 1510 DB=(RA*T)^2
- 1520 DN=DA+DB
- 1530 RS=RA^2
- 1540 XS=XA^2
- 1550 RN=RA*(1+TS)
- 1560 XK=XA*(1-TS)
- 1570 XM=((1-RS)-XS)*T
- 1580 XN=XK+XM
- 1590 RZ=RN/DN
- 1600 XZ=XN/DN
- 1610 RI=ZL*RZ
- 1620 XI=ZL*XZ
- 1630 IF LR=LP THEN GOTO 1240
- 1640 IF LR=LM THEN GOTO 1310
- 1650 LOCATE CSRLIN-6
- 1660 XPA=(RIA^2+XIA^2)/XIA:XCOMPA=(-1*XPA)
- 1670 PRINT " Required parallel stub reactance to compensate...";
- 1680 PRINT USING U1$;XCOMPA;:PRINT " -"
- 1690 LRL=ATN(XCOMPA/ZS):LDL=ABS(LRL)*180/PI
- 1700 IF XCOMPA<0 THEN LDL=180-LDL
- 1710 LFL=LDL*VFS/(0.366013*FQ)
- 1720 LRC=ATN(ZS/XCOMPA):LDC=ABS(LRC)*180/PI
- 1730 IF XCOMPA>0 THEN LDC=180-LDC
- 1740 LFC=LDC*VFS/(0.366013*FQ)
- 1750 PRINT " SHORTED STUB length is";USING U3$;LDL;
- 1760 PRINT "<UNK! {00F8}> or................";USING U1$;LFL;:PRINT " ft.=";
- 1770 PRINT USING U2$;LFL*0.3048;:PRINT "m"
- 1780 PRINT " OPEN STUB length is ";USING U3$;LDC;
- 1790 PRINT "<UNK! {00F8}> or................";USING U1$;LFC;:PRINT " ft.=";
- 1800 PRINT USING U2$;LFC*0.3048;:PRINT "m"
- 1810 LOCATE CSRLIN+3
- 1820 XPB=(RIB^2+XIB^2)/XIB:XCOMPB=(-1*XPB)
- 1830 PRINT " Required parallel stub reactance to compensate...";
- 1840 PRINT USING U1$;XCOMPB;:PRINT " -"
- 1850 LRL=ATN(XCOMPB/ZS):LDL=ABS(LRL)*180/PI
- 1860 IF XCOMPB<0 THEN LDL=180-LDL
- 1870 LFL=LDL*VFS/(0.366013*FQ)
- 1880 LRC=ATN(ZS/XCOMPB):LDC=ABS(LRC)*180/PI
- 1890 IF XCOMPB>0 THEN LDC=180-LDC
- 1900 LFC=LDC*VFS/(0.366013*FQ)
- 1910 PRINT " SHORTED STUB length is";USING U3$;LDL;
- 1920 PRINT "<UNK! {00F8}> or................";USING U1$;LFL;:PRINT " ft.=";
- 1930 PRINT USING U2$;LFL*0.3048;:PRINT "m"
- 1940 PRINT " OPEN STUB length is ";USING U3$;LDC;
- 1950 PRINT "<UNK! {00F8}> or................";USING U1$;LFC;:PRINT " ft.=";
- 1960 PRINT USING U2$;LFC*0.3048;:PRINT "m"
- 1970 GOSUB 2000
- 1980 GOTO 120 'start
- 1990 '
- 2000 'HARDCOPY
- 2010 GOSUB 2120:LOCATE 25,2:COLOR 14,6
- 2020 PRINT " Press 1 to print screen, 2 to print screen & ";
- 2030 PRINT "advance paper, or 3 to continue.";:COLOR 7,0
- 2040 Z$=INKEY$:IF Z$="3"THEN GOSUB 2120:RETURN
- 2050 IF Z$="1"OR Z$="2"THEN GOSUB 2120:GOTO 2070
- 2060 GOTO 2040
- 2070 FOR QX=1 TO 24:FOR QY=1 TO 80
- 2080 LPRINT CHR$(SCREEN(QX,QY));
- 2090 NEXT QY:NEXT QX
- 2100 IF Z$="2"THEN LPRINT CHR$(12)
- 2110 GOTO 2010
- 2120 LOCATE 25,1:PRINT STRING$(80,32);:RETURN
-